package crm

import (
	"service/api/crm/cmc"
	"service/api/crm/comm"
	"service/api/crm/data"
	"service/api/crm/energy_conf"
	"service/api/crm/order"
	"service/api/crm/vip"
	"service/ctrl"
	"service/model/mod"

	"gitee.com/cloudapex/ulern/htp"
	"github.com/gin-gonic/gin"
)

func init() {
	ctrl.Svr.RegistRouter(func(r *gin.Engine) {
		g := r.Group("crm")

		commRouter(g)
		cmcRouter(g)
		orderRouter(g)
		vipRouter(g)
		energyRouter(g)
		notifyRouter(g)
		dataRouter(g)
	})
}
func commRouter(r *gin.RouterGroup) {
	gr := r.Group("comm")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	//gr.Use(permit.MH_Permit(mod.RDB(mod.ERDB_Permt), conf.Main.AdminIds()))

	gr.GET("orderBList", // 订单列表(业务)
		func(c *gin.Context) { htp.Service(c, &comm.OrderBList{}) })
	gr.GET("orderAList", // 订单列表(管理)
		func(c *gin.Context) { htp.Service(c, &comm.OrderAList{}) })

	//
	//
	// 留
	// 空
	// 间
	// 防
	// 止
	// 合
	// 并
	// 冲
	// 突
	//
}
func cmcRouter(r *gin.RouterGroup) {
	gr := r.Group("cmc")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	//gr.Use(permit.MH_Permit(mod.RDB(mod.ERDB_Permt), conf.Main.AdminIds()))

	gr.POST("work_pool", //获取首咨库存工作池列表
		func(c *gin.Context) { htp.Service(c, &cmc.FirstBaseListed{}) })
	gr.GET("csid_info", //机会查询
		func(c *gin.Context) { htp.Service(c, &cmc.GetCsIdInfo{}) })
	gr.GET("add_pool", //机会创建
		func(c *gin.Context) { htp.Service(c, &cmc.AddPool{}) })
	gr.GET("openList", // 公海列表
		func(c *gin.Context) { htp.Service(c, &cmc.OpenList{}) })
	gr.GET("del_work", // 回库/放弃数据
		func(c *gin.Context) { htp.Service(c, &cmc.DelWorkPool{}) })
	gr.GET("edit_base", //修改机会基本信息
		func(c *gin.Context) { htp.Service(c, &cmc.EditPoolRes{}) })
	gr.GET("get_first", //索取首资		//未测试不可用
		func(c *gin.Context) { htp.Service(c, &cmc.GetFirstConsuRes{}) })
	gr.GET("sign_first", //签到/自动分配首资		//未测试不可用
		func(c *gin.Context) { htp.Service(c, &cmc.SignFirstConsuRes{}) })
	gr.GET("stock_cof", //领取库存  今日领取/库存上限
		func(c *gin.Context) { htp.Service(c, &cmc.FraProjConfList{}) })
	gr.GET("pro_cof", //项目配置
		func(c *gin.Context) { htp.Service(c, &cmc.ProjConfList{}) })
	gr.POST("receive", // 公海领取
		func(c *gin.Context) { htp.Service(c, &cmc.Receive{}) })
	gr.POST("wayOut", //出格登记添加
		func(c *gin.Context) { htp.Service(c, &cmc.WayOut{}) })
	gr.GET("call_node", //备注添加
		func(c *gin.Context) { htp.Service(c, &cmc.PoolNodeAdd{}) })
	gr.GET("inventory", //来10条库存
		func(c *gin.Context) { htp.Service(c, &cmc.Inventory{}) })
	//
	// 留
	// 空
	// 间
	// 防
	// 止
	// 合
	// 并
	// 冲
	// 突
	//
	//
	// 留
	// 空
	// 间
	// 防
	// 止
	// 合
	// 并
	// 冲
	// 突
	//
	//
	// 留
	// 空
	// 间
	// 防
	// 止
	// 合
	// 并
	// 冲
	// 突
	//

	gr.POST("stuInfo", // 公海领取中客户详情 /cmc/stuInfo
		func(c *gin.Context) { htp.Service(c, &cmc.StuInfo{}) })

}
func orderRouter(r *gin.RouterGroup) {
	gr := r.Group("order")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	//gr.Use(permit.MH_Permit(mod.RDB(mod.ERDB_Permt), conf.Main.AdminIds()))

	// gr.GET("payCode", // 生成支付码
	// 	func(c *gin.Context) { htp.Service(c, &order.PayCode{}) })
	gr.GET("tmpClsList", // 临时开课审核列表
		func(c *gin.Context) { htp.Service(c, &order.TmpClsList{}) })
	gr.POST("temporary", // 临时开课
		func(c *gin.Context) { htp.Service(c, &order.Temporary{}) })
	gr.POST("pass", // 通过(临时开课审核)
		func(c *gin.Context) { htp.Service(c, &order.Pass{}) })
	gr.POST("cancel", // 取消订单
		func(c *gin.Context) { htp.Service(c, &order.Cancel{}) })
	gr.GET("continue", // 续课(已支付的订单)
		func(c *gin.Context) { htp.Service(c, &order.Continue{}) })
	gr.POST("ply_order", //全款下单
		func(c *gin.Context) { htp.Service(c, &order.CrmOrderCreate{}) })
	gr.POST("deposit_balance", //定金尾款下单
		func(c *gin.Context) { htp.Service(c, &order.DepositBalance{}) })
	gr.POST("deposit", //判断客户id下的订单情况
		func(c *gin.Context) { htp.Service(c, &order.OrderUCList{}) })
	gr.POST("check", // 审核(未支付的)
		func(c *gin.Context) { htp.Service(c, &order.Check{}) })
	gr.POST("reject", // 驳回(未支付的)
		func(c *gin.Context) { htp.Service(c, &order.Reject{}) })
	gr.POST("appoint", // 业绩指派
		func(c *gin.Context) { htp.Service(c, &order.Appoint{}) })
	gr.POST("assign", // 分配班主任
		func(c *gin.Context) { htp.Service(c, &order.Assign{}) })
	gr.GET("assignLog", // 分配班记录
		func(c *gin.Context) { htp.Service(c, &order.AssignLog{}) })
	gr.POST("student_info", // 学员库业务
		func(c *gin.Context) { htp.Service(c, &order.StudentItem{}) })
	gr.POST("student_infos", // 学员库管理
		func(c *gin.Context) { htp.Service(c, &order.StudentItemG{}) })
	gr.POST("depsitbla", //查询该订单下是否支付过尾款和定金订单
		func(c *gin.Context) { htp.Service(c, &order.OrderDepsitBla{}) })
	gr.POST("suborder", //查询子订单列表
		func(c *gin.Context) { htp.Service(c, &order.CrmSubOrderReq{}) })

	//gr.GET("lcw_notify", // 扫呗回调
	//func(c *gin.Context) { htp.Service(c, &order.LcNotify{}) })
	gr.POST("lcpay_notify", order.LcPayNotify) //扫呗回调方法

	//
	// 留
	// 空
	// 间
	// 防
	// 止
	// 合
	// 并
	// 冲
	// 突
	//
	//
	// 留
	// 空
	// 间
	// 防
	// 止
	// 合
	// 并
	// 冲
	// 突
	//
}

func vipRouter(r *gin.RouterGroup) {
	gr := r.Group("vip")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))

	gr.POST("addVipCard", func(c *gin.Context) { htp.Service(c, &vip.AddVipCardReq{}) })   // 金卡下单 vip/addVipCard
	gr.POST("vipCardList", func(c *gin.Context) { htp.Service(c, &vip.VipCardList{}) })    // 金卡列表 vip/vipCardList
	gr.POST("updateState", func(c *gin.Context) { htp.Service(c, &vip.UpdateState{}) })    // 金卡状态更改 vip/updateState
	gr.GET("exportVipCard", func(c *gin.Context) { htp.Service(c, &vip.ExportVipCard{}) }) // 金卡列表导出 vip/exportVipCard

}

func energyRouter(r *gin.RouterGroup) {
	gr := r.Group("energy")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	gr.POST("projConfList", func(c *gin.Context) { htp.Service(c, &energy_conf.ProjConfList{}) })     // 项目配置列表 energy/projConfList
	gr.POST("updateProjConf", func(c *gin.Context) { htp.Service(c, &energy_conf.UpdateProjConf{}) }) // 项目配置更新 energy/updateProjConf

	gr.POST("fraProjConfList", func(c *gin.Context) { htp.Service(c, &energy_conf.FraProjConfList{}) }) //  业务项目配置列表 energy/fraProjConfList
	gr.POST("addFraProjConf", func(c *gin.Context) { htp.Service(c, &energy_conf.AddFraProjConf{}) })   //  业务项目配置添加 energy/addFraProjConf
	gr.POST("delcFraProjConf", func(c *gin.Context) { htp.Service(c, &energy_conf.DelcFraProjConf{}) }) //  业务项目配置删除 energy/delcFraProjConf

	gr.POST("manaProjConfList", func(c *gin.Context) { htp.Service(c, &energy_conf.ManaProjConfList{}) })     //  职能配置信息列表 energy/manaProjConfList
	gr.POST("addManaProjConf", func(c *gin.Context) { htp.Service(c, &energy_conf.AddManaProjConf{}) })       //  职能配置信息添加 energy/addManaProjConf
	gr.POST("addManaPersonConf", func(c *gin.Context) { htp.Service(c, &energy_conf.AddManaPersonConf{}) })   //  职能配置信息添加 energy/addManaPersonConf
	gr.POST("delcManaProjConf", func(c *gin.Context) { htp.Service(c, &energy_conf.DelcManaProjConf{}) })     //  职能配置信息删除 energy/delcFraProjConf
	gr.POST("importManaProjConf", func(c *gin.Context) { htp.Service(c, &energy_conf.ImportManaProjConf{}) }) //  职能配置信息导入 energy/importManaProjConf

	//
	// 留
	// 空
	// 间
	// 防
	// 止
	// 合
	// 并
	// 冲
	// 突
	//
	//
	// 留
	// 空
	// 间
	// 防
	// 止
	// 合
	// 并
	// 冲
	// 突
	//
	//
	// 留
	// 空
	// 间
	// 防
	// 止
	// 合
	// 并
	// 冲
	// 突
	//

}

func notifyRouter(r *gin.RouterGroup) {
	gr := r.Group("notify")
	gr.POST("lcpay_notify", order.LcPayNotify)   //扫呗回调方法
	gr.POST("alipay_notify", order.AliPayNotify) //支付宝回调方法
	gr.POST("now_notify", order.NowNotify)       //聚合回调方法
	gr.POST("wx_notify", order.WxNotify)         //微信回调方法
}

func dataRouter(r *gin.RouterGroup) {
	gr := r.Group("data")
	gr.Use(htp.MH_JWTAuthed(mod.MH_AUTH))
	//gr.Use(permit.MH_Permit(mod.RDB(mod.ERDB_Permt), conf.Main.AdminIds()))

	gr.GET("baseList", // 库存列表[未分配]
		func(c *gin.Context) { htp.Service(c, &data.BaseList{}) })
	gr.GET("firstList", // 首咨列表[未分配]
		func(c *gin.Context) { htp.Service(c, &data.FirstList{}) })
	gr.GET("firstBaseListed", // 首咨|库存列表[已分配时]
		func(c *gin.Context) { htp.Service(c, &data.FirstBaseListed{}) })
	gr.GET("silentList", // 静默库列表(用户出格审核)
		func(c *gin.Context) { htp.Service(c, &data.SilentList{}) })
	gr.GET("junkList", // 垃圾库列表
		func(c *gin.Context) { htp.Service(c, &data.JunkList{}) })

	gr.POST("assign", // 库存分配
		func(c *gin.Context) { htp.Service(c, &data.Assign{}) })
	gr.POST("wayOut", // 出格审核
		func(c *gin.Context) { htp.Service(c, &data.WayOut{}) })
}
